package godzilla.ciudad.desastres;

import godzilla.ciudad.Mapa;
import godzilla.ciudad.Punto;
import godzilla.ciudad.estructuras.Superficie;

import java.util.LinkedList;

public abstract class Estrategia {

	protected Mapa mapa;
	private Punto puntoInicial;
	protected Superficie superficieActual;

	public Superficie avanzarUnPaso() {

		return this.avanzarEspecificamente();
		
	}

	protected abstract Superficie avanzarEspecificamente();
	
	
	public void definirMapa(Mapa mapa) {
		this.mapa=mapa;
		
	}

	public void comenzarEn(Punto punto) {
		this.puntoInicial = punto;
		this.superficieActual = mapa.verSuperficieEn(this.puntoInicial);
		//this.puntoActual = punto;
		
	}

	public void armarCamino(LinkedList<Superficie> camino) {

		camino.add(mapa.verSuperficieEn(this.puntoInicial));
		while(sePuedeAvanzar()){
			camino.add(avanzarUnPaso());
		}
		
	}

	private boolean sePuedeAvanzar() {

		return comparacionEspecifica();
				
	}

	protected abstract boolean comparacionEspecifica();

}
